Apache ActiveMQ ™ -- Configuring ActiveMQ CPP
Connectivity > Cross Language Clients > ActiveMQ C++ Clients > Configuring ActiveMQ CPP
The configuration of ActiveMQ is so slick, we decided to take a similar approach with ActiveMQ-CPP. All configuration is achieved via URI-encoded parameters, either on the connection or destinations. Through the URIs, you can configure virtually every facet of your ActiveMQ-CPP client. The tables below show the comprehensive set of parameters.
Connection URI Parameters
Example Configuration
cf = new ActiveMQConnectionFactory( "tcp://localhost:61616?wireFormat=openwire&wireFormat.tightEncodingEnabled=true");
Socket Options
Option Name
Default
Description
inputBufferSize
10000
The number of bytes in the buffered input stream's buffer
outputBufferSize
10000
The number of bytes in the buffered output stream's buffer
soLinger
0
Socket SOLinger value
soKeepAlive
false
Socket SOKeepAlive value
soReceiveBufferSize
-1
Socket receive buffer. If -1, use OS default.
soSendBufferSize
-1
Socket send buffer. If -1, use OS default.
Transport Options
Option Name
Default
Description
commandTracingEnabled
false
If true, enables tracing of incoming and outgoing transport commands
tcpTracingEnabled
false
If true, enables tracing of raw network IO (in hex)
useAsyncSend
false
If true, enables asynchronous sending of messages.
Transaction Options
Option Name
Default
Description
transaction.maxRedeliveryCount
5
Maximum number of redelivery attempts.
Wire Format Protocol Options
Option Name
Default
Description
wireFormat
openwire
Selects the wire format to use. Out of the box, can be either stomp or openwire.
wireFormat.stackTraceEnabled
false
Should the stack trace of exception that occur on the broker be sent to the client? Only used by openwire protocol.
wireFormat.cacheEnabled
false
Should commonly repeated values be cached so that less marshalling occurs? Only used by openwire protocol.
wireFormat.tcpNoDelayEnabled
false
Does not affect the wire format, but provides a hint to the peer that TCP nodelay should be enabled on the communications Socket. Only used by openwire protocol.
wireFormat.sizePrefixDisabled
false
Should serialized messages include a payload length prefix? Only used by openwire protocol.
wireFormat.tightEncodingEnabled
false
Should wire size be optimized over CPU usage? Only used by the openwire protocol.
Destination URI Parameters
Example Configuration
d = session->createTopic("com.foo?consumer.prefetchSize=2000&consumer.noLocal=true");
General Options
Option Name
Default
Description
consumer.prefetchSize
1000
The number of message the consumer will prefetch.
consumer.maximumPendingMessageLimit
0
Use to control if messages are dropped if a slow consumer situation exists.
consumer.noLocal
false
Same as the noLocal flag on a Topic consumer. Exposed here so that it can be used with a queue.
consumer.dispatchAsync
false
Should the broker dispatch messages asynchronously to the consumer.
consumer.retroactive
false
Is this a Retroactive Consumer.
consumer.selector
null
JMS Selector used with the consumer.
consumer.exclusive
false
Is this an Exclusive Consumer.
consumer.priority
0
Allows you to configure a Consumer Priority.
OpenWire-only Options
Option Name
Default
Description
consumer.browser
false
consumer.networkSubscription
false
consumer.optimizedAcknowledge
false
Enables an optimised acknowledgement mode where messages are acknowledged in batches rather than individually. Alternatively, you could use Session.DUPS_OK_ACKNOWLEDGE acknowledgement mode for the consumers which can often be faster. WARNING enabling this issue could cause some issues with auto-acknowledgement on reconnection
consumer.noRangeAcks
false
consumer.retroactive
false
Sets whether or not retroactive consumers are enabled. Retroactive consumers allow non-durable topic subscribers to receive old messages that were published before the non-durable subscriber started.
producer.dispatchAsyc
false